package com.eduagent.xwqeduagent.model.dto;

import lombok.Data;

import java.util.List;

/**
 * 实时练习评测助手请求对象
 */
@Data
public class ExerciseEvaluationRequest {

    /**
     * 请求类型：QUESTION（提问）, EVALUATE（评估答案）, SUMMARY（总结）, REINFORCE（强化训练）
     */
    private String requestType;
    
    /**
     * 学生提问内容或学生答案
     * 当requestType为EVALUATE且只有单题评估时使用
     */
    private String content;

    /**
     * 练习题目内容（当requestType为QUESTION或EVALUATE且只有单题评估时需要）
     */
    private String exerciseContent;
    
    /**
     * 当前练习的正确答案（当requestType为EVALUATE且只有单题评估时需要）
     */
    private String correctAnswer;

    /**
     * 当前练习的学科/主题
     */
    private String subject;
    
    /**
     * 会话ID，用于连续对话
     */
    private String sessionId;
    
    /**
     * 多题目评估列表（当requestType为EVALUATE且需要评估多题时使用）
     */
    private List<ExerciseSubmission> submissions;
    
    /**
     * 本次练习会话的评测结果（当requestType为SUMMARY或REINFORCE时传入，用于总结或生成强化训练）
     */
    private ExerciseSessionResult sessionResult;
    
    /**
     * 提交的习题答案
     */
    @Data
    public static class ExerciseSubmission {
        /**
         * 题目ID
         */
        private String questionId;
        
        /**
         * 题目内容
         */
        private String questionText;
        
        /**
         * 题目类型
         * MULTIPLE_CHOICE, TRUE_FALSE, FILL_IN_THE_BLANK, SHORT_ANSWER, ESSAY, COMPUTATIONAL, MATCHING
         */
        private String type;
        
        /**
         * 学生答案
         */
        private String studentAnswer;
        
        /**
         * 正确答案
         */
        private String correctAnswer;
        
        /**
         * 题目分值
         */
        private Double score;
    }
    
    /**
     * 练习会话结果
     */
    @Data
    public static class ExerciseSessionResult {
        /**
         * 总体评价
         */
        private String overallEvaluation;
        
        /**
         * 总分
         */
        private Double totalScore;
        
        /**
         * 得分
         */
        private Double earnedScore;
        
        /**
         * 各题目评测结果
         */
        private List<QuestionResult> questionResults;
        
        /**
         * 题目评测结果
         */
        @Data
        public static class QuestionResult {
            /**
             * 题目ID
             */
            private String questionId;
            
            /**
             * 题目内容
             */
            private String questionText;
            
            /**
             * 题目类型
             */
            private String type;
            
            /**
             * 学生答案
             */
            private String studentAnswer;
            
            /**
             * 正确答案
             */
            private String correctAnswer;
            
            /**
             * 是否正确
             */
            private Boolean isCorrect;
            
            /**
             * 得分
             */
            private Double score;
            
            /**
             * 满分
             */
            private Double fullScore;
            
            /**
             * 知识点
             */
            private List<String> knowledgePoints;
        }
    }
} 